package com.mysoftbase.base.holder;

import lombok.extern.slf4j.Slf4j;

/**
 * @Author: JohnCoding
 * @Description:
 * @date: 2020/4/30 9:47
 */
@Slf4j
public class DataSourceContextHolder {

    /**
     * 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     *  所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */
    private static final ThreadLocal<String> contextHolder = new InheritableThreadLocal<>();

    /**
     *  设置数据源
     * @param db
     */
    public static void setDataSource(String db){
        log.info("设置数据源--->"+db);
        contextHolder.set(db);
        log.info("设置数据源成功");
    }

    /**
     * 取得当前数据源
     * @return
     */
    public static String getDataSource(){
        return contextHolder.get();
    }

    /**
     * 清除上下文数据
     */
    public static void clear(){
        contextHolder.remove();
        log.info("清除数据源成功");
    }
}
